package com.photonpay.api.request;

import cn.hutool.http.Method;
import com.alibaba.fastjson2.annotation.JSONField;
import com.photonpay.api.response.BaseResponse;
import lombok.Data;

/**
 * 基础请求类
 *
 * @author ：lo-
 * @date ：Created in 2023/8/21 11:39
 */
@Data
public abstract class BaseRequest<T extends BaseResponse> {

    /**
     * 响应数据class
     *
     * @return 类
     */
    @JSONField(serialize = false)
    public abstract Class<T> getResponseClass();

    /**
     * api基础path
     *
     * @return api名字
     */
    @JSONField(serialize = false)
    public abstract String getBasePath();

    /**
     * 请求方式
     *
     * @return get post
     */
    @JSONField(serialize = false)
    public abstract Method getMethod();

    /**
     * 是否需要签名
     *
     * @return true = 需要
     */
    @JSONField(serialize = false)
    public abstract boolean isSign();

    /**
     * 是否需要token
     *
     * @return true = 默认需要
     */
    @JSONField(serialize = false)
    public boolean isAccessToken() {
        return true;
    }

    /**
     * 是否获取token路径
     *
     * @return false = 默认不是
     */
    @JSONField(serialize = false)
    public boolean isGetTokenPath() {
        return false;
    }

}
